//Update version:ajax-api-template.js
import AjaxApi from "../lib/ApiFactory";

export default class AjaxApiTemplate {
    constructor(url) {
        this.url = url;
    }

    static instance(url) {
        return new AjaxApiTemplate(url);
    }

    post(data) {
        return AjaxApi({
            url: this.url,
            contentType: 'application/json',
            dataType: "json",
            method: "POST"
        })(data);
    }

    put(data) {
        if (!data)
            return AjaxApi({
                url: this.url,
                method: "PUT"
            })();

        return AjaxApi({
            url: this.url,
            contentType: 'application/json',
            dataType: "json",
            method: "PUT"
        })(data);
    }

    del() {
        return AjaxApi({
            url: this.url,
            method: "DELETE"
        })();
    }

    get(data) {
        return AjaxApi({
            url: this.url
        })(data);
    }
}

//system-parameter-ajax-api.js
import AjaxApiTemplate from "../../common/ajax-api-template";

export default class SystemParameterAjaxApi {
    static uriPrefix = "/pc/server-api/systemparameter/";

    static getStoreLevels() {
        const url = SystemParameterAjaxApi.uriPrefix + 'store-level/list';
        return AjaxApiTemplate.instance(url).get();
    }

    static createSystemParam(data) {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix).post(data);
    }

    static updateSystemParam(systemParameterId, data) {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix + systemParameterId).put(data);
    }

    static enableSystemParam(systemParameterId) {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix + systemParameterId + '/enable').put();
    }

    static disableSystemParam(systemParameterId) {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix + systemParameterId + '/disable').put();
    }

    static deleteSystemParam(systemParameterId) {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix + systemParameterId).del();
    }

    static getSystemParam(systemParameterId) {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix + systemParameterId).get();
    }

    static getSystemParamTypes() {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix + 'type/list').get();
    }

    static getSystemParams(keyword = "", pageNum = 1, pageSize = 20) {
        return AjaxApiTemplate.instance(SystemParameterAjaxApi.uriPrefix + 'list').get({
            "pageNum": pageNum,
            "pageSize": pageSize,
            "keyword": keyword
        });
    }
}
